/**
 * 变量局部化，可以提高代码的执行效率（减少了数据访问时需要照的路径）
 */

var i, str = ''
// 创建foo1的堆地址0x001
function foo1() {
  for (i = 0; i < 1000; i++) {
    str += i
  }
}

// 创建foo2的堆地址0x002
function foo2() {
  let str = ''
  for (let i = 0; i < 1000; i++) {
    str += i
  }
}

// 执行时，foo1的执行上下文EC(foo1)中并没有变量str和i，需要到全局执行上下文EC(G)中寻找，会消耗很多时间
foo1()
// 执行时，foo1的执行上下文EC(foo2)中有变量str和i，会节省很多时间
foo2()